home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 626-637 / disk_632 / printfiles / source / prf_docommand.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  13KB  |  263 lines

  1. /* prf_docommand.c */
  2. /* V1.1 9-3-92 */
  3.  
  4. #include "prf.h"
  5.  
  6. struct EasyStruct AboutReq =
  7.        {
  8.         0L,0L,(UBYTE *)ABOUT_LINE1,
  9.               (UBYTE *)ABOUT_LINE2,
  10.               (UBYTE *)ABOUT_LINE3,
  11.        };
  12.  
  13. struct EasyStruct QuitReq =
  14.        {
  15.         0L,0L,(UBYTE *)QUIT_LINE1,
  16.               (UBYTE *)QUIT_LINE2,
  17.               (UBYTE *)QUIT_LINE3
  18.        };
  19. struct EasyStruct StopReq =
  20.        {
  21.         0L,0L,(UBYTE *)STOP_LINE1,
  22.               (UBYTE *)STOP_LINE2,
  23.               (UBYTE *)STOP_LINE3,
  24.        };
  25.  
  26. struct EasyStruct FinalReq =
  27.        {
  28.         0L,0L,(UBYTE *)FINAL_LINE1,
  29.               (UBYTE *)FINAL_LINE2,
  30.               (UBYTE *)FINAL_LINE3,
  31.        };
  32.  
  33. long DoCommand(struct prf_info *info, long cmd)
  34. {
  35.  struct StringInfo *s;
  36.  struct Node       *n;
  37.  BOOL               rc1;
  38.  long               ins = CMD_INSERTTAIL;
  39.  long               rc  = CMD_NEUTRAL;
  40.  switch(cmd)
  41.  {
  42.   case CMD_RESETALL  : Prf_Reset(info);
  43.                        break;
  44.   case CMD_CLEARLIST : DetachList(info);
  45.                        while(n = (struct Node *)RemHead(&info->FileList))free((struct FileNameNode *)n);
  46.                        AttachList(info);
  47.                        break;
  48.   case CMD_SAVEPREFS : SavePreferences(info,NULL);
  49.                        break;
  50.   case CMD_PRINT     : PrintQueue(info);
  51.                        break;
  52.   case CMD_OPENWD    : if(!(info->Swd)) ChangeApp(info);
  53.                        break;
  54.   case CMD_CLOSEWD   : if(info->Swd)ChangeApp(info);
  55.                        break;
  56.   case CMD_LMARGIN   : s = (struct StringInfo *)info->PGadgets[GD_Lmargin - PGD]->SpecialInfo;
  57.                        if(s->LongInt < info->Rmargin )
  58.                        {
  59.                         info->Lmargin = (ULONG)s->LongInt;
  60.                         info->Columns = info->Rmargin - info->Lmargin;
  61.                        }
  62.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Lmargin - PGD],info->Pwd,NULL,GTIN_Number,info->Lmargin,TAG_DONE);
  63.                        break;
  64.   case CMD_RMARGIN   : s = (struct StringInfo *)info->PGadgets[GD_Rmargin- PGD]->SpecialInfo;
  65.                        if(s->LongInt > info->Lmargin )
  66.                        {
  67.                         info->Rmargin = (ULONG)s->LongInt;
  68.                         info->Columns = info->Rmargin - info->Lmargin;
  69.                        }
  70.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Rmargin- PGD],info->Pwd,NULL,GTIN_Number,info->Rmargin,TAG_DONE);
  71.                        break;
  72.   case CMD_LINES     : s = (struct StringInfo *)info->PGadgets[GD_Linesperpage- PGD]->SpecialInfo;
  73.                        info->Lines = (ULONG)s->LongInt;
  74.   case CMD_OPENPWD   : OpenPwd(info);
  75.                        break;
  76.   case CMD_CLOSEPWD  : ClosePwd(info);
  77.                        break;
  78.   case CMD_STR_INSERT: s = (struct StringInfo *)info->SGadgets[GD_Gadget11]->SpecialInfo;
  79.                        info->Special1 = (APTR)s->Buffer;
  80.                        info->Special2 = (APTR)&ins;
  81.                        InsertName(info);
  82.                        info->Special1 = NULL;
  83.                        info->Special2 = NULL;
  84.                        break;
  85.   case CMD_REMOVE    : s = (struct StringInfo *)info->SGadgets[GD_Gadget11]->SpecialInfo;
  86.                        info->Special1 = (APTR)s->Buffer;
  87.                        info->Special2 = (APTR)&ins;
  88.                        RemoveName(info);
  89.                        info->Special1 = NULL;
  90.                        info->Special2 = NULL;
  91.                        break;
  92.                        break;
  93.   case CMD_CHANGEAPP : ChangeApp(info);
  94.                        break;
  95.   case CMD_FILEREQ   : Prf_FileReq(info);
  96.                        break;
  97.   case CMD_RXQUIT    : rc = CMD_QUIT;
  98.                        break;
  99.   case CMD_QUIT      : if(info->flags & FLAG_PRINT)
  100.                        {
  101.                         rc1 = EasyRequestArgs(info->Swd,&StopReq,NULL,NULL);
  102.                         if(rc1 == 1) rc = CMD_QUIT;
  103.                        }
  104.                        else
  105.                        {
  106.                         rc1 = EasyRequestArgs(info->Swd,&QuitReq,NULL,NULL);
  107.                         switch(rc1)
  108.                         {
  109.                          case 1    : rc1 = EasyRequestArgs(info->Swd,&FinalReq,NULL,NULL);
  110.                                      if(rc1 == 0)rc = CMD_QUIT;
  111.                                      break;
  112.                          case 2    : ChangeApp(info);
  113.                                      break;
  114.                          default   : break;
  115.                         }
  116.                        }
  117.                        break;
  118.   case CMD_ABOUT     : (void)EasyRequestArgs(info->Swd,&AboutReq,NULL,NULL);
  119.                        break;
  120.   case CMD_HEAD      : if(info->Swd)ActivateGadget(info->SGadgets[GD_Headline],info->Swd,NULL);
  121.                        break;
  122.   case CMD_FOOT      : if(info->Swd)ActivateGadget(info->SGadgets[GD_Footline],info->Swd,NULL);
  123.                        break;
  124.   case CMD_HEADL     : s = (struct StringInfo *)info->SGadgets[GD_Headline]->SpecialInfo;
  125.                        strcpy(info->Headline,s->Buffer);
  126.                        break;
  127.   case CMD_FOOTL     : s = (struct StringInfo *)info->SGadgets[GD_Footline]->SpecialInfo;
  128.                        strcpy(info->Footline,s->Buffer);
  129.                        break;
  130.   case CMD_DATE_ON   : info->flags |= FLAG_DATE;
  131.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Date],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  132.                        break;
  133.   case CMD_DATE_OFF  : info->flags ^= FLAG_DATE;
  134.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Date],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  135.                        break;
  136.   case CMD_TIME_ON   : info->flags |= FLAG_TIME;
  137.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Time],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  138.                        break;
  139.   case CMD_TIME_OFF  : info->flags ^= FLAG_TIME;
  140.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Time],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  141.                        break;
  142.   case CMD_NAME_ON   : info->flags |= FLAG_FILE;
  143.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Filename],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  144.                        break;
  145.   case CMD_NAME_OFF  : info->flags ^= FLAG_FILE;
  146.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Filename],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  147.                        break;
  148.   case CMD_FF_ON     : info->flags |= FLAG_FF;
  149.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_FF],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  150.                        break;
  151.   case CMD_FF_OFF    : info->flags ^= FLAG_FF;
  152.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_FF],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  153.                        break;
  154.   case CMD_CRLF_ON   : info->flags |= FLAG_CRLF;
  155.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_CRLF],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  156.                        break;
  157.   case CMD_CRLF_OFF  : info->flags ^= FLAG_CRLF;
  158.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_CRLF],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  159.                        break;
  160.   case CMD_PAGE_ON   : info->flags |= FLAG_PAGE;
  161.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Pagenumber],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  162.                        break;
  163.   case CMD_PAGE_OFF  : info->flags ^= FLAG_PAGE;
  164.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Pagenumber],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  165.                        break;
  166.   case CMD_LINE_ON   : info->flags |= FLAG_LINE;
  167.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Linenumber],info->Swd,NULL,GTCB_Checked,TRUE,TAG_DONE);
  168.                        break;
  169.   case CMD_LINE_OFF  : info->flags ^= FLAG_LINE;
  170.                        if(info->Swd)GT_SetGadgetAttrs(info->SGadgets[GD_Linenumber],info->Swd,NULL,GTCB_Checked,FALSE,TAG_DONE);
  171.                        break;
  172.   case CMD_PITCH6    : info->flags |= FLAG_PITCH6;
  173.                        if(info->flags & FLAG_PITCH8)info->flags ^= FLAG_PITCH8;
  174.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Pitch - PGD],info->Pwd,NULL,GTMX_Active,0,TAG_DONE);
  175.                        break;
  176.   case CMD_PITCH8    : info->flags |= FLAG_PITCH8;
  177.                        if(info->flags & FLAG_PITCH6)info->flags ^= FLAG_PITCH6;
  178.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Pitch - PGD],info->Pwd,NULL,GTMX_Active,1,TAG_DONE);
  179.                        break;
  180.   case CMD_DRAFT     : info->flags |= FLAG_DRAFT;
  181.                        if(info->flags & FLAG_LQ)info->flags ^= FLAG_LQ;
  182.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Quality - PGD],info->Pwd,NULL,GTMX_Active,0,TAG_DONE);
  183.                        break;
  184.   case CMD_LQ        : info->flags |= FLAG_LQ;
  185.                        if(info->flags & FLAG_DRAFT)info->flags ^= FLAG_DRAFT;
  186.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_Quality - PGD],info->Pwd,NULL,GTMX_Active,1,TAG_DONE);
  187.                        break;
  188.   case CMD_10CPI     : info->flags |= FLAG_10CPI;
  189.                        if(info->flags & FLAG_12CPI)info->flags ^= FLAG_12CPI;
  190.                        if(info->flags & FLAG_15CPI)info->flags ^= FLAG_15CPI;
  191.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_cpi - PGD],info->Pwd,NULL,GTMX_Active,0,TAG_DONE);
  192.                        break;
  193.   case CMD_12CPI     : if(info->flags & FLAG_10CPI)info->flags ^= FLAG_10CPI;
  194.                        info->flags |= FLAG_12CPI;
  195.                        if(info->flags & FLAG_15CPI)info->flags ^= FLAG_15CPI;
  196.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_cpi - PGD],info->Pwd,NULL,GTMX_Active,1,TAG_DONE);
  197.                        break;
  198.   case CMD_15CPI     : if(info->flags & FLAG_10CPI)info->flags ^= FLAG_10CPI;
  199.                        if(info->flags & FLAG_12CPI)info->flags ^= FLAG_12CPI;
  200.                        info->flags |= FLAG_15CPI;
  201.                        if(info->Pwd)GT_SetGadgetAttrs(info->PGadgets[GD_cpi - PGD],info->Pwd,NULL,GTMX_Active,2,TAG_DONE);
  202.                        break;
  203.   default            :
  204.                        break;
  205.  }
  206.  return (rc);
  207. }
  208.  
  209. void  SavePreferences(struct prf_info *info,UBYTE *name)
  210. {
  211.  FILE *prefs;
  212.  UBYTE filename[STR_SIZE];
  213.  struct FileNameNode *n;
  214.  if(name) strcpy(filename,name);
  215.   else Prf_SavePrefs(info,filename);
  216.  if(info->Swd)
  217.  {
  218.   SwdTags[0].ti_Data = (ULONG)info->Swd->LeftEdge;
  219.   SwdTags[1].ti_Data = (ULONG)info->Swd->TopEdge;
  220.  }
  221.  if(*filename)
  222.  {
  223.   if(prefs = fopen(filename,"w"))
  224.   {
  225.    fprintf(prefs,T_PREFSHEADER);
  226.    fprintf(prefs,T_PREFSHEADER1);
  227.    fprintf(prefs,T_PREFSHEADER2);
  228.    fprintf(prefs,T_RX_RESET RT_RX_RESET"\n");
  229.    if(info->flags & FLAG_10CPI)fprintf(prefs,T_RX_10CPI RT_RX_10CPI "\n");
  230.    if(info->flags & FLAG_12CPI)fprintf(prefs,T_RX_12CPI RT_RX_12CPI "\n");
  231.    if(info->flags & FLAG_15CPI)fprintf(prefs,T_RX_15CPI RT_RX_15CPI "\n");
  232.    if(info->flags & FLAG_DRAFT)fprintf(prefs,T_RX_DRAFT RT_RX_DRAFT "\n");
  233.    if(info->flags & FLAG_LQ)fprintf(prefs,T_RX_LQ RT_RX_LQ "\n");
  234.    if(info->flags & FLAG_PAGE)fprintf(prefs,T_RX_PAGE RT_RX_PAGE "\n");
  235.    if(info->flags & FLAG_TIME)fprintf(prefs,T_RX_TIME RT_RX_TIME "\n");
  236.    if(info->flags & FLAG_FILE)fprintf(prefs,T_RX_FILE RT_RX_FILE "\n");
  237.    if(info->flags & FLAG_LINE)fprintf(prefs,T_RX_LINE RT_RX_LINE "\n");
  238.    if(info->flags & FLAG_DATE)fprintf(prefs,T_RX_DATE RT_RX_DATE "\n");
  239.    if(info->flags & FLAG_PITCH6)fprintf(prefs,T_RX_PITCH6 RT_RX_PITCH6 "\n");
  240.    if(info->flags & FLAG_PITCH8)fprintf(prefs,T_RX_PITCH8 RT_RX_PITCH8 "\n");
  241.    if(info->flags & FLAG_FF)fprintf(prefs,T_RX_FF RT_RX_FF "\n");
  242.    if(info->flags & FLAG_CRLF)fprintf(prefs,T_RX_CRLF RT_RX_CRLF "\n");
  243.    if(*(info->Headline))fprintf(prefs,"%s '%s'" RT_RX_HEAD "\n", T_RX_HEAD,info->Headline);
  244.    if(*(info->Footline))fprintf(prefs,"%s '%s'" RT_RX_FOOT "\n", T_RX_FOOT,info->Footline);
  245.    fprintf(prefs,"%s %ld" RT_RX_LMARGIN "\n",T_RX_LMARGIN,info->Lmargin);
  246.    fprintf(prefs,"%s %ld" RT_RX_RMARGIN "\n",T_RX_RMARGIN,info->Rmargin);
  247.    fprintf(prefs,"%s %ld" RT_RX_LINES "\n",T_RX_LINES,info->Lines);
  248.    n = (struct FileNameNode *)info->FileList.lh_Head;
  249.    while(n && (n != (struct FileNameNode *)info->FileList.lh_Tail))
  250.    {
  251.     if(*(n->fnn_Name))
  252.     {
  253.      fprintf(prefs, "%s '%s'" RT_RX_INSFILE "\n", T_RX_INSFILE,n->fnn_Name);
  254.     }
  255.     n = (struct FileNameNode *)n->fnn_Node.ln_Succ;
  256.    }
  257.    fprintf(prefs,T_RX_OPENWINDOW " " T_RX_CONTROL " %ld %ld " RT_RX_OPENWINDOW "\n",SwdTags[0].ti_Data,SwdTags[1].ti_Data);
  258.    fclose(prefs);
  259.   }
  260.  }
  261. }
  262.  
  263.